From f5b1e75d93b3586b0d9ad47070a1a43e29cb35cf Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 23 May 2014 15:52:16 +0200 Subject: [PATCH] widget: Include box-shadow in the clip This allows all widgets that implement clip to use box shadows. --- gtk/gtkcssstylepropertyimpl.c | 2 +- gtk/gtkwidget.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index 4bb8547738..f1acf9a13b 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -1013,7 +1013,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("box-shadow", GTK_CSS_PROPERTY_BOX_SHADOW, G_TYPE_NONE, - GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE, + GTK_STYLE_PROPERTY_ANIMATED, shadow_value_parse, NULL, NULL, diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 70dd74eb1f..5a9b8b7c05 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -39,6 +39,7 @@ #include "gtkclipboard.h" #include "gtkcssstylepropertyprivate.h" #include "gtkcssnumbervalueprivate.h" +#include "gtkcssshadowsvalueprivate.h" #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkselectionprivate.h" @@ -15447,10 +15448,22 @@ union_with_clip (GtkWidget *widget, void _gtk_widget_set_simple_clip (GtkWidget *widget) { + GtkStyleContext *context; GtkAllocation clip; + GtkBorder extents; + + context = gtk_widget_get_style_context (widget); gtk_widget_get_allocation (widget, &clip); + _gtk_css_shadows_value_get_extents (_gtk_style_context_peek_property (context, + GTK_CSS_PROPERTY_BOX_SHADOW), + &extents); + clip.x -= extents.left; + clip.y -= extents.top; + clip.width += extents.left + extents.right; + clip.height += extents.top + extents.bottom; + if (GTK_IS_CONTAINER (widget)) gtk_container_forall (GTK_CONTAINER (widget), union_with_clip, &clip); -- 2.30.2